package com.cc.blog.admin.schedule;

import com.cc.blog.admin.mapper.StatisticsArticlePVMapper;
import com.cc.blog.admin.model.StatisticsArticlePVDO;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 访问量定时任务
 * @author cc
 * @date 2024/7/21 17:53
 */
@Component
@Slf4j
@AllArgsConstructor
public class InitPVRecordScheduledTask {

    private final StatisticsArticlePVMapper articlePVMapper;

    @Scheduled(cron = "0 0 23 * * ?") // 每天晚间 23 点执行
    public void execute() {
        // 定时任务执行的业务逻辑
        log.info("==> 开始执行初始化明日 PV 访问量记录定时任务");
        // 当日日期
        LocalDate currDate = LocalDate.now();
        // 明日
        LocalDate tomorrowDate = currDate.plusDays(1);
        // 组装插入的记录
        StatisticsArticlePVDO articlePVDO = StatisticsArticlePVDO.builder()
                // 明日的文章 pv 访问量
                .pvDate(tomorrowDate)
                // 默认阅读量为 0
                .pvCount(0L)
                .createTime(LocalDateTime.now())
                .updateTime(LocalDateTime.now())
                .build();
        articlePVMapper.insert(articlePVDO);
        log.info("==> 结束执行初始化明日 PV 访问量记录定时任务");
    }
}
